#ifndef __CRC_EXT_H_H_
#define	__CRC_EXT_H_H_

#include "stdint.h"

#ifdef	__cplusplus
extern "C" {
#endif

	uint8_t   crc4_itu_calc(uint8_t *data, uint32_t length);

	uint8_t   crc5_epc_calc(uint8_t *data, uint32_t length);
	uint8_t   crc5_itu_calc(uint8_t *data, uint32_t length);
	uint8_t   crc5_usb_calc(uint8_t *data, uint32_t length);
	uint8_t   crc6_itu_calc(uint8_t *data, uint32_t length);
	uint8_t   crc7_mmc_calc(uint8_t *data, uint32_t length);

	uint8_t   crc8_calc(uint8_t *data, uint32_t length);
	uint8_t   crc8_itu_calc(uint8_t *data, uint32_t length);
	uint8_t   crc8_rohc_Calc(uint8_t *data, uint32_t length);
	uint8_t   crc8_maxim_calc(uint8_t *data, uint32_t length);
	uint8_t   crc8_cdma2000_calc(uint8_t *data, uint32_t length);
	uint8_t   crc8_darc_calc(uint8_t *data, uint32_t length);
	uint8_t   crc8_dvb_s2_calc(uint8_t *data, uint32_t length);
	uint8_t   crc8_ebu_calc(uint8_t *data, uint32_t length);
	uint8_t   crc8_i_code_calc(uint8_t *data, uint32_t length);
	uint8_t   crc8_wcdma_calc(uint8_t *data, uint32_t length);

	uint16_t  crc16_ibm_calc(uint8_t *data, uint32_t length);
	uint16_t  crc16_maxim_calc(uint8_t *data, uint32_t length);
	uint16_t  crc16_usb_calc(uint8_t *data, uint32_t length);
	uint16_t  crc16_modbus_calc(uint8_t *data, uint32_t length);
	uint16_t  crc16_ccitt_calc(uint8_t *data, uint32_t length);
	uint16_t  crc16_ccitt_false_calc(uint8_t *data, uint32_t length);
	uint16_t  crc16_x25_calc(uint8_t *data, uint32_t length);
	uint16_t  crc16_xmodem_calc(uint8_t *data, uint32_t length);
	uint16_t  crc16_dnp_calc(uint8_t *data, uint32_t length);
	uint16_t  crc16_aug_ccitt_calc(uint8_t *data, uint32_t length);
	uint16_t  crc16_buypass_calc(uint8_t *data, uint32_t length);
	uint16_t  crc16_cdma2000_calc(uint8_t *data, uint32_t length);
	uint16_t  crc16_dds_110_calc(uint8_t *data, uint32_t length);
	uint16_t  crc16_dect_r_calc(uint8_t *data, uint32_t length);
	uint16_t  crc16_dect_x_calc(uint8_t *data, uint32_t length);
	uint16_t  crc16_en_13757_calc(uint8_t *data, uint32_t length);
	uint16_t  crc16_genibus_calc(uint8_t *data, uint32_t length);
	uint16_t  crc16_mcrf4xx_calc(uint8_t *data, uint32_t length);
	uint16_t  crc16_riello_calc(uint8_t *data, uint32_t length);
	uint16_t  crc16_t10_dif_calc(uint8_t *data, uint32_t length);
	uint16_t  crc16_teledisk_calc(uint8_t *data, uint32_t length);
	uint16_t  crc16_tms37157_calc(uint8_t *data, uint32_t length);
	uint16_t  crc16_a_calc(uint8_t *data, uint32_t length);

	uint32_t  crc32_calc(uint8_t *data, uint32_t length);
	uint32_t  crc32_mpeg_2_calc(uint8_t *data, uint32_t length);
	uint32_t  crc32_bzip2_calc(uint8_t *data, uint32_t length);
	uint32_t  crc32_posix_calc(uint8_t *data, uint32_t length);
	uint32_t  crc32_jamcrc_calc(uint8_t *data, uint32_t length);
	uint32_t  crc32_xfer_calc(uint8_t *data, uint32_t length);
	uint32_t  crc32_c_calc(uint8_t *data, uint32_t length);
	uint32_t  crc32_d_calc(uint8_t *data, uint32_t length);
	uint32_t  crc32_q_calc(uint8_t *data, uint32_t length);

#ifdef	__cplusplus
}
#endif

#endif	

